package dominio.neuronio;

import java.text.DecimalFormat;

public class Sinapse {
	
	private double entrada;
	private double peso;
	
	/**
	 * 
	 * 
	 * @param entrada
	 */
	public Sinapse( double entrada ) {
		this.entrada = entrada;
		this.peso = Math.random();		
	}
	
	/**
	 * 
	 * 
	 * @param entrada
	 */
	public Sinapse( double entrada, double peso ) {
		this.entrada = entrada;
		this.peso = peso;		
	}
	
	/**
	 * Método que retorna o valor de entrada 
	 * ponderado de acordo com o peso definido.
	 * 
	 * @return
	 */
	public double getEntradaPonderada(){
		//System.out.println("entrada = " + entrada + " x peso = " + peso + " = " + (this.entrada * this.peso));
		return this.entrada * this.peso;
	}
	
	/**
	 * 
	 */
	public void ajustarPeso( double ajuste ){
		this.peso += ajuste; 
	}
	
	/**
	 * @return the peso
	 */
	public double getPeso() {
		return this.peso;
	}

	/**
	 * 
	 * @return
	 */
	public double getEntrada(){
		return this.entrada;
	}
	
	/**
	 * 
	 * @param entrada
	 */
	public void setEntrada(double entrada){
		this.entrada = entrada;
	}

	/*
	 * (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		DecimalFormat formatter = new DecimalFormat( "0.0000" );  
		formatter.setPositivePrefix( " " );
		
		StringBuffer buf = new StringBuffer();
		
		buf.append(formatter.format(this.entrada)).append(" -------> (peso = ").append(formatter.format(this.peso));
		buf.append(") -------> ").append(formatter.format(getEntradaPonderada())).append(" -------> ");
		
		return buf.toString();
	}
	
	public String toString(boolean semPeso) {
		if(semPeso){
			DecimalFormat formatter = new DecimalFormat( "0.0000" );  
			formatter.setPositivePrefix( " " );
			
			StringBuffer buf = new StringBuffer();
			
			buf.append(formatter.format(this.entrada)).append(" -------> ");
			
			return buf.toString();
		}else 
			return this.toString();
	}

}
